from django.db import models

from TestTask.models import TestTask
from Testproject.models import TestProjectModel, TestEnvModel


# Create your models here.


class CronJob(models.Model):
    """
    | id          | int        | 否   |           | 自增长主键ID  |
    |:----------- |:---------- |:--- | --------- | -------- |
    | project     | ForeignKey | 否   |           | 所属项目     |
    | create_time | DataTime   | 否   |           | 创建时间     |
    | name        | varchar    | 否   |           | 定时任务名称   |
    | rule        | varchar    | 否   | * * * * * | 定时执行规则   |
    | status      | Boolean    | 否   | flase     | 是否启用     |
    | env         | ForeignKey | 否   |           | 执行使用测试环境 |
    | task        | ForeignKey | 否   |           | 执行的测试任务  |

    """
    CHOICES = [
        ("1", "开启"),
        ("2", "关闭")
    ]
    project = models.ForeignKey(TestProjectModel, on_delete=models.CASCADE, verbose_name="所属项目",
                                help_text="所属项目")
    create_time = models.DateTimeField(verbose_name="创建时间", help_text="创建时间", auto_now_add=True)
    name = models.CharField(max_length=150, verbose_name="定时任务名称", help_text="定时任务名称")
    rule = models.CharField(max_length=50, verbose_name="定时执行规则", help_text="定时执行规则")
    status = models.BooleanField(default=False, verbose_name="是否启用")
    env = models.ForeignKey(TestEnvModel, on_delete=models.PROTECT, verbose_name="执行使用测试环境",
                            help_text="执行使用测试环境")
    task = models.ForeignKey(TestTask, on_delete=models.PROTECT, verbose_name="执行的测试任务",
                             help_text="执行的测试任务")

    def __str__(self):
        return self.name

    class Meta:
        db_table = "cron_job"
        verbose_name_plural = "定时任务表"
